#!/usr/bin/env python3
# coding: utf-8

from wxpy import *
import configparser

"""
 :param cache_path:
     * 设置当前会话的缓存路径，并开启缓存功能；为 `None` (默认) 则不开启缓存功能。
     * 开启缓存后可在短时间内避免重复扫码，缓存失效时会重新要求登陆。
     * 设为 `True` 时，使用默认的缓存路径 'wxpy.pkl'。
 :param console_qr:
     * 在终端中显示登陆二维码，需要安装 pillow 模块 (`pip3 install pillow`)。
     * 可为整数(int)，表示二维码单元格的宽度，通常为 2 (当被设为 `True` 时，也将在内部当作 2)。
     * 也可为负数，表示以反色显示二维码，适用于浅底深字的命令行界面。
     * 例如: 在大部分 Linux 系统中可设为 `True` 或 2，而在 macOS Terminal 的默认白底配色中，应设为 -2。
 :param qr_path: 保存二维码的路径
 :param qr_callback: 获得二维码后的回调，可以用来定义二维码的处理方式，接收参数: uuid, status, qrcode
 :param login_callback: 登陆成功后的回调，若不指定，将进行清屏操作，并删除二维码文件
 :param logout_callback: 登出时的回调
 
 
 群管理，必须保存到通讯录中
 """

iniFile = 'wechat.ini'
# 读取配置文件
config = configparser.ConfigParser()
config.read(iniFile, encoding='utf-8')

# 微信登陆 cache_path 设置缓存，避免短时间内重复登陆
bot = Bot(cache_path=True)
# 初始化图灵机器人 (API key 申请: http://tuling123.com)
tuling = Tuling(api_key=config.get('DEFAULT', 'api_key').replace('\n', ''))


# 管理员功能
# adminer = bot.friends(update=True).search(config.get('DEFAULT', 'adminer').replace('\n','')[0])


# 自动回复所有文字消息
@bot.register(msg_types=TEXT)
def auto_reply_all(msg):

    ##群聊不@不回复
    if isinstance(msg.chat, Group) and not msg.is_at:
        return
    userid = bot.self.raw.get('Uin')  # 用户id
    # username = bot.self.user_name#用户name
    # 首先打印消息
    print(msg)
    # print(bot.groups().search('U &amp; me'))
    # print(msg.member.name)
    '''飞机票'''
    if '给我飞机票' in msg.text.lower() or '飞机票' in msg.text.lower():

        # msg.sender.send('{}再见'.format(msg.member))
        # print(bot.groups().search('日常学python技术交流群')[0].members)
        # bot.groups().search('日常学python技术交流群')[0].members.remove(msg.member) ###错误
        # print('re')
        # print(bot.groups().search('日常学python技术交流群')[0].search(msg.member))
        print(bot.groups().search('日常学python技术交流群')[0].search(msg.member.name))
        print(bot.groups().search('日常学python技术交流群')[0].remove(msg.member))
        print('return')


        print(bot.groups().search('日常学python技术交流群')[0].members.search(msg.member))
        # bot.groups().search('日常学python技术交流群')[0].members.search(msg.member.name).remove()
        print('return')
        return
        bot.groups().search('日常学python技术交流群')[0].members.search(msg.member.name)[0].remove()
        print('return')
        bot.groups().search('日常学python技术交流群')[0].members.remove(msg.member)
        print('return')
        return



    '''消息转发'''
    if config.get('DEFAULT', 'forwardState').replace('\n', '') == '1' and userid == int(
            config.get('DEFAULT', 'adminer').replace('\n', '')):
        msg.forward(ensure_one(bot.groups().search(config.get('DEFAULT', 'forwardGroup').replace('\n', ''))),
                    prefix='管理员发话啦')
        config.set('DEFAULT', 'forwardState', '0')
        return

    if '转发' in msg.text.lower() and userid == int(config.get('DEFAULT', 'adminer').replace('\n', '')) and config.get(
            'DEFAULT', 'forwardState').replace('\n', '') == '0':
        msg.sender.send('你要转发什么消息')
        config.set('DEFAULT', 'forwardState', '1')
        return

    '''id '''
    if '我的ID' in msg.text.lower() or '我的id' in msg.text.lower() or 'id' in msg.text.lower():
        msg.sender.send('你的ID是:{}'.format(bot.self.raw.get('Uin')))
        return

    '''菜单回复'''
    if '菜单' in msg.text.lower():
        msg.sender.send(config.get('DEFAULT', 'menu'))
        return
    if '注销登陆' in msg.text.lower():
        if userid == int(config.get('DEFAULT', 'adminer').replace('\n', '')):
            msg.sender.send('亲爱的巴巴，正在注销，请稍后')
            bot.logout()
        else:
            msg.sender.send('亲，你不是我巴巴，无法注销')
        return

    if '重置' in msg.text.lower():
        if userid == int(config.get('DEFAULT', 'adminer').replace('\n', '')):
            config.read(iniFile, encoding='utf-8')
            msg.sender.send('重置成功')
        return
    if '添加关键字' in msg.text.lower():
        keys = config.get('BLACKLIST', 'keyword').replace('\n', '')
        newKey = msg.text.replace('添加关键字', '').replace(':', '').replace('：', '')
        config.set('BLACKLIST', 'keyword', '{},{}'.format(keys, newKey))
        config.write(open(iniFile, "w+", encoding='utf-8'))
        msg.sender.send('添加成功')
        msg.sender.send(config.get('BLACKLIST', 'keyword').replace('\n', ''))
        return
    if '关键字' in msg.text.lower():
        msg.sender.send(config.get('BLACKLIST', 'keyword').replace('\n', ''))
        return

    if '这是怎么弄的' in msg.text.lower():
        msg.sender.send('打开网站 http://www.heanny.cn 学习')
        return
    # 获取所有好友
    if '全部好友' in msg.text.lower():
        friends = bot.friends()
        for friend in friends:
            print(friend)
            fri = str(friend).replace('<Friend:', '').replace('>', '')
            msg.sender.send(fri)
        return
    # 推荐管理员
    if '管理员' in msg.text.lower():
        msg.sender.send_raw_msg(
            # 注意 `username` 在这里应为微信 ID，且被发送的名片必须为自己的好友
            raw_type=42,
            raw_content='<msg username="{}" nickname="管理员"/>'.format(
                config.get('DEFAULT', 'adminer').replace('\n', '')[0])
        )
        return
    # 推荐公众号
    if '公众号' in msg.text.lower():
        msg.sender.send_raw_msg(
            raw_type=42,
            raw_content='<msg username="{}" nickname="{}"/>'.format(
                config.get('DEFAULT', 'public').replace('\n', '')[0],
                config.get('DEFAULT', 'publicName').replace('\n', '')[0])
        )
        return
    if 'darling' in msg.text.lower():
        msg.sender.send_image('image/darling.jpg')
        # msg.sender.send_file('darling.jpg')
        return

    tulingmsg = tuling.do_reply(msg)
    print(tulingmsg)


# 自动回复所有图片消息
@bot.register(msg_types=PICTURE)
def auto_reply_all(msg):
    msg.sende.send('本公举不想和你斗图')


# 自动回复所有分享消息
@bot.register(msg_types=SHARING)
def auto_reply_all(msg):
    print(msg)
    print(msg.url)
    print(msg.articles)
    '''将关键消息设置到此，进行相关屏蔽'''
    msg.sender.send('你从哪偷的链接发过来的,黄牌警告')
    pass


# 自动回复所有地图消息
@bot.register(msg_types=MAP)
def auto_reply_all(msg):
    # msg.sender.send('暂时无法读取地图消息')
    pass


# 自动回复所有语音消息
@bot.register(msg_types=RECORDING)
def auto_reply_all(msg):
    # print(type(msg)) #<class 'wxpy.api.messages.message.Message'>
    # print(bot.self.raw.get('VoiceLength'))#None
    msg.sender.send('粑粑还没有给我添加语音功能呢，莫着急哦')
    pass


# 消息类型
# # 文本
# TEXT = 'Text'
# # 位置
# MAP = 'Map'
# # 名片
# CARD = 'Card'
# # 提示
# NOTE = 'Note'
# # 分享
# SHARING = 'Sharing'
# # 图片
# PICTURE = 'Picture'
# # 语音
# RECORDING = 'Recording'
# # 文件
# ATTACHMENT = 'Attachment'
# # 视频
# VIDEO = 'Video'
# # 好友请求
# FRIENDS = 'Friends'
# # 系统
# SYSTEM = 'System'


# 注册好友请求类消息
@bot.register(msg_types=FRIENDS, enabled=True)
# 自动接受验证信息中包含 '小萌加我' 的好友请求
def auto_accept_friends(msg):
    addfriend_request = '小萌加我'
    # 判断好友请求中的验证文本
    if addfriend_request in msg.text.lower():
        # 接受好友 (msg.card 为该请求的用户对象)
        new_friend = bot.accept_friend(msg.card)
        # 或 new_friend = msg.card.accept()
        # 向新的好友发送消息
        new_friend.send('机器人自动接受了你的请求,你可以回复"菜单"获取功能菜单，若机器人没回复菜单则表明机器人尚未工作，请等待')


# 开始运行
bot.join()
# embed()  #调试
